#pragma once
#include "EngineInterface.h"

namespace Core{
	class WindowsEngineInterface : public EngineInterface{
	public:
		WindowsEngineInterface();

		void initialize(HINSTANCE instance, int cmdShow, EnginePlatforms platform, Graphics::RenderMode& mode);
		void run();
	private:
		void renderThread();
		void loadThread();
		void soundThread();

		HRESULT initWindow(HINSTANCE hInstance, int nCmdShow, Graphics::RenderMode &mode);
		static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
	private:
		HWND 		m_hwnd;
		HINSTANCE	m_hinstance;
		int			m_nCmdShow;

		boost::shared_ptr<Core::Event<MSG*>> m_messageEvent;
	};
}